﻿#include<stdio.h>
//退格符/b:光标退回一个字符，但不删除字符
//int main()
//{
//	//printf("abcdefghi\n");//取消/n,不让他继续换行
//	printf("abcdefghi\b\n");
//	//为了演示/b的作用，我们需要让光标出现，即不让程序结束，换句话说，让程序等在这里，不继续往下走
//	printf("abcdefghi\bx");//与上面那行代码相比，i的位置被x取代
//	getchar();//意思是获取字符，为了实现我们的目的//前后两次运行程序对比，发现光标位置发生变化，前进了一格
//	return 0;
//}
//int main()//制表符/t，光标移到下⼀个⽔平制表位，通常是下⼀个4/8的倍数。相当于键盘上的tab键,
//          //  四个字节或八个字节，一个水平制表符八个字节，/t的意思是对齐到下一个水平制表符
//{
//	printf("abcdefgixxxxxxxxxxxxxxxxxxxxxxxx\n");
//	printf("a\tbc\tdef\tghixxxxxxxxx\n");//运行出程序，两行代码对比，加上a一共空了八个字节
//
//	return 0;
//}
//int main()
//
//	printf("zhang\t\t20\n");//代码运行可看出\t可进行内容上的对齐
//	printf("lisi\t\t18");
//}
//int main()//\ddd：表⽰1~3个⼋进制的数字。 \xdd：表⽰2个⼗六进制数字。\0就是 \ddd这类转义字符的⼀种，⽤于字符串的结束标志
//{
//	printf("%c\n", '\130');//程序运行显示出“x”
//	printf("%c\n", '\x30');//字符0，不是数字0，%c代表字符型,%d代表整型
//	return 0;
//}
//int main()
//{
//	;
//	return 0;//空语句
//}
//int main()
//{
//	int a = 20; 
//	int b = 0;
//	return 0;
//}
//#include <stdio.h> 
//int main()
//{    
//	printf("hehe\n");//函数调⽤语句     
//    return 0;
//}
#include<stdbool.h>
////int main()
////{
////	_Bool n = true;//只能写true或false
////	if (n)
////		printf("I like c\n");
////	return 0;
////}
//int main()
//{
//	/*_Bool n = false;
//	if (n)
//		printf("I like c\n");*/
//	bool m = true;
//	return 0;
//}
//int main()//sizeof打印的结果应该用%zd,单位是字节
//{
//	printf("%d\n", sizeof(char));
//	printf("%d\n", sizeof(bool));
//	printf("%zd\n", sizeof(int));
//	printf("%zd\n", sizeof(short));
//	printf("%zd\n", sizeof(long));
//	printf("%zd\n", sizeof(long long));
//	printf("%zd\n", sizeof(float));
//	printf("%zd\n", sizeof(double));
//	printf("%zd\n", sizeof(long double));//sizeof(long double)>=sizeof(double)
//	return 0;
//}
//int main()
//{
//	int a = 100;
//	printf("%zd\n", sizeof(int));
//	printf("%zd\n", sizeof(a));
//	printf("%zd\n", sizeof a);//变量或者表达式在这里可以省略括号，还是别省了
//	printf("%zd\n", sizeof(a + 3));
//	printf("%zd\n", sizeof a + 3);
//	return 0;
//}
#include <stdio.h>
//int main()
//{
//	short s = 2;
//	int b = 10;
//	printf("%d\n", sizeof(s = b + 1));
//	printf("s = %d\n", s);//发生了截断
//	return 0;
//}
//
//int main()
//{
//	int age = 20;
//	char ch = 'q';//初始化
//	float weight = 50.5f;//50.5默认为double,加上f认为是float
//
//	return 0;
//}

//int b = 100;//全局变量 共享单车
//int main()
//{
//	printf("1:b=%d\n", b);
//
//	int a = 10;//局部变量 私家单车
//	{
//		int c = 200;
//		printf("c=%d\n", c);
//		printf("2:b=%d\n", b);
//
//	}
//	printf("3:b=%d\n", b);
//	return 0;
//}
//extern int val;//声明外部符号，如果不加这行，无法运行，局部变量做不到
//int main()
//{
//	printf("%d\n", val);
//	return 0;
//}
int a = 100;
int main()
{
	int a = 10;
	printf("%d\n", a);//以为打印出来会很混乱，有全局变量和局部变量互相干扰，事实上只有局部变量
	return 0;//由此得出局部变量和全局变量名字相同，局部变量优先。
	//局部变量是放在内存的栈区，全局变量是放在内存的静态区，堆区是⽤来动态内存管理的（后期会介绍）
}